﻿//【初阶】22.stack和queue(3)

//【头文件包含】
//C++的主要头文件
#include<iostream>//c++的输入输出流
using std::cout, std::endl, std::cin;

#include<stack>
#include<queue>
#include<string>
#include<deque>;
using std::deque;
using std::stack;
using std::queue;
using std::string;
//C的主要头文件
//#include<stdio.h>
//#include<stdlib.h>
//#include<assert.h>
//#include<string.h> 
#include<vector>;
using std::vector;
using std::priority_queue;

#include<algorithm>
#include<time.h>

#include<functional>
using std::greater;
#include"priority_queue.h"



//【命名空间】

//【结构体声明】【类声明】



//【函数声明】
void Test1();void Test2();void Test3(); 

//【主函数】
int main()
{
	
	Test1();
	Test2();
	Test3();
    
	cout << "****主函数结束****" << endl;
	return 0;
}
/*测试用例*/void Test1()
{
	cout << "****测试用例开始****"<< endl;
    priority_queue<int> pq;
    pq.push(3);
    pq.push(1);
    pq.push(9);
    pq.push(4);
    pq.push(2);
    while (!pq.empty())
    {
        cout << pq.top() << " ";
        pq.pop();
    }
    cout << endl;
    priority_queue<int,vector<int>,greater<int>>pq1;
    pq1.push(3);
    pq1.push(1);
    pq1.push(9);
    pq1.push(4);
    pq1.push(2);
    while (!pq1.empty())
    {
        cout << pq1.top() << " ";
        pq1.pop();
    }
    cout << endl;
	cout << "****测试用例结束****" << endl << endl;
}
/*测试用例*/void Test2()
{
	cout << "****测试用例开始****" << endl;
    myspace::test_priority_queue1();
    myspace::test_priority_queue2();
	cout << "****测试用例结束****" << endl<<endl;
}

/*测试用例*/void Test3()
{
	cout << "****测试用例开始****" << endl;
	
	cout << "****测试用例结束****" << endl << endl;
}



//【笔记】
//【初阶】22.stack和queue(3)
//优先级队列 priority_queue
// template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type> > class priority_queue;
    // 优先级高的先出,默认值大的优先级高，底层实现类似一个堆
    // 利用仿函数可以改为较小的优先级高
    //仿函数利用一个类来实现()的重载。并用这个类创造的对象给某些模版函数的函数型模版创建一个缺省值通过控制该函数实现需要的功能
//目前学习了
    // 容器：string/vector/list/deque (这些都是序列式容器)
    // 迭代器：iterator/const_iterator/reverse_iterator/const_reverse_iterator
    // 适配器：stack/queue/priotity_queue
    // 算法：sort/find/reverse
    // 仿函数:less/greater




